package independence.events
{
	import __AS3__.vec.Vector;
	
	import flash.events.IEventDispatcher;
	
	/**
	 * The <code>IEventManager</code> interface defines methods for working with the managing of 
	 * events for a specific object. Use this interface in conjunction with the actual <code>IEventManager</code>
	 * implementation, <code>EventManager</code>.
	 * 
	 * @author	TK, TK Assembled for Independence Glory.
	 * @see independence.events.EventManager</code>
	 * @see independence.events.EventListener</code>
	 * @see flash.events.EventDispatcher
	 * @see flash.events.IEventDispatcher
	 */
	public interface IEventManager extends IEventDispatcher
	{
		/**
		 * Adds multiple event listeners to an object in the form of a <code>Vector</code> of the type
		 * <code>EventListener</code>. Use this method to quickly add a number of event listeners simultaneously
		 * to an object.
		 * @param	listeners	A <code>Vector</code> of type <code>EventListener</code> to add as event listeners to this object.
		 * @see	independence.events.EventListener	
		 */	
		function addEventListeners(listeners:Vector.<EventListener>):void;
		/**
		 * Removes all event listeners from this object that were registered with
		 * <code>addEventListener</code> or <code>addEventListeners</code>. Use this method
		 * to prepare an object for garbage collection.
		 */
		function clearEventListeners():void;
		/**
		 * Temporarily removes all event listeners from this object. This method essentially
		 * disables all event listeners registered with the target object. To reenable the event
		 * listeners, use <code>enableEventListeners()</code>.
		 */
		function disableEventListeners():void;
		/**
		 * Enables event listeners that were previously disabled by a call to <code>disableEventListeners()</code>. 
		 * Essentially, this adds all registered event listeners onto this object with the settings given when
		 * the event listeners were created.
		 */
		function enableEventListeners():void;
		/**
		 * Returns a list of all <code>EventListener</code> objects registered to listen for 
		 * events on this instance. WARNING: Do not tamper with the returned <code>EventListener</code>
		 * objects: doing so will cause methods like <code>disableEventListeners()</code> and <code>clearEventListeners()</code>
		 * to not function as desired.
		 * @return	A <code>Vector</code> of type <code>EventListener</code> containing all event listeners registered with this instance.
		 */
		function getEventListeners():Vector.<EventListener>;
	}
}